/**
 * Created by yiihua-013 on 16/10/31.
 *
 * 老数据("永久数据")丢失现象
 */

'use strict'

const Memcached = require('memcached')
const client    = new Memcached('127.0.0.1:11211')

// 118个8880bytes的chunk将填满一个slab,其中第一个key设置为永久有效,其余117个设置20s失效
const CHUNK_SIZE = 8850,
      TOTAL      = 118

client.set('pk', 'p'.repeat(CHUNK_SIZE), 0, (err, data) => {
    if (err) console.error(err)
    if (data) {
        console.log('永久数据设置成功')
    }
})

for (let i = 0; i < 117; i++) {
    let key = `tk${i}`
    client.set(key, 't'.repeat(CHUNK_SIZE), 30, (err, data) => {
        if (err) console.error(err)
        if (data) {
            console.log('临时数据设置成功')
            // memcached使用LRU删除机制,设置之后立即进行get操作将会使该key活跃
            client.get(key, (err, data) => {
                if (err) console.error(err)
            })
        }
    })
}

// be sure the code above exec success
setTimeout(() => {
    client.set('newkey', 'a new data comming,永久数据将会被踢'.repeat(30), 0, (err, data)=> {
        if (err) console.error(err)
        if (data) console.log('新数据被设置了,永久数据pk将会被踢,telnet后使用stats查看evictions,并且get pk会返回空')
    })
}, 3000);
